#pragma once

class CDependencyObject;
#include "CFxCallbacks.h"

class AgCoreCallbacks :
	public CFxCallbacks
{
public:
	AgCoreCallbacks(void);
	~AgCoreCallbacks(void);

	static HRESULT STDMETHODCALLTYPE AreObjectsOfSameType(CDependencyObject *nativeObject1, CDependencyObject *nativeObject2, unsigned int *areEqual);
	static HRESULT STDMETHODCALLTYPE CallAUHandler(unsigned int errorCode);
	static HRESULT STDMETHODCALLTYPE ContentControl_ShouldBringIntoViewOnKeyboardFocus(CDependencyObject *nativeTarget, unsigned int *pShouldBringIntoView);
	static HRESULT STDMETHODCALLTYPE CreateManagedPeer(CDependencyObject *element, int typeIndex, unsigned int fPeggedNoRef, unsigned int fPeggedRef, unsigned int isShutdownException);
	static HRESULT STDMETHODCALLTYPE EnsureIsObjectOfType(void *target, void *targetType);
	static HRESULT STDMETHODCALLTYPE FireEvent(CDependencyObject *unmanagedObj, CDependencyObject *unmanagedObjArgs, int argsTypeIndex, int actualArgsTypeIndex, unsigned __int16 *eventName, unsigned int flags);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_ClearAnimatedValue(CDependencyObject *pNativeTarget, unsigned int customPropertyID, unsigned int hasHoldEndValue, CValue *pHoldEndValue, unsigned int typeIndex);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_ClearDataContext(CFrameworkElement *pElement);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_GetCustomProperty(CDependencyObject *pNativeTarget, unsigned int customPropertyID, CValue *pPropertyValue);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_GetCustomPropertyID(unsigned int typeID, unsigned __int16 *szPropertyName, unsigned int *pCustomPropertyID);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_GetCustomPropertyType(unsigned int customPropertyID, unsigned int *pTypeIndex);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_GetCustomTypeFullName(CDependencyObject *target, unsigned __int16 **fullName, unsigned int *fullNameLength);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_GetCustomTypeIDFromObject(CDependencyObject *target, unsigned int *typeID);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_GetFirstFocusableElement(CDependencyObject *pSearchStart, CDependencyObject **ppFirstFocusable);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_GetLastFocusableElement(CDependencyObject *pSearchStart, CDependencyObject **ppLastFocusable);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_ProcessTabStop(CDependencyObject *pFocusedElement, unsigned int shiftPressed, CDependencyObject **ppNewTabStop);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_SetAnimatedValue(CDependencyObject *pNativeTarget, unsigned int customPropertyID, CValue *pPropertyValue, unsigned int typeIndex);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_SetDataContext(CFrameworkElement *pElement, CValue *pValue);
	static HRESULT STDMETHODCALLTYPE FrameworkCallbacks_SupportInitializeEndInit(CDependencyObject *nativeTarget);
	static HRESULT STDMETHODCALLTYPE GetBuiltInStyle(CDependencyObject *nativeTarget, CStyle **nativeStyle);
	static HRESULT STDMETHODCALLTYPE GetDynamicTimelines(CDependencyObject *pNativeDynamicTimeline, unsigned int bGenerateSteadyStateOnly, CValue *pNativeTimelineCollection);
	static HRESULT STDMETHODCALLTYPE GetExceptionText(unsigned __int16 **text, unsigned int *textLength);
	static HRESULT STDMETHODCALLTYPE HwndHost_BuildWindow(CDependencyObject *nativeHwndHost, void *hwndParent, void **phwnd);
	static HRESULT STDMETHODCALLTYPE HwndHost_DestroyWindow(CDependencyObject *nativeHwndHost);
	static HRESULT STDMETHODCALLTYPE HwndHost_TranslateAccelerator(CDependencyObject *nativeHwndHost, void *pMsg, unsigned int *pbHandled);
	static HRESULT STDMETHODCALLTYPE InvalidateProperty(CDependencyObject *nativeTarget, unsigned int propertyId);
	static HRESULT STDMETHODCALLTYPE LoadThemeResources();
	static HRESULT STDMETHODCALLTYPE ManagedPeerTreeUpdate(CDependencyObject *oldParentElement, CDependencyObject *parentElement, CDependencyObject *childElement, char bIsParentAlive, char bKeepReferenceToParent, unsigned int canCreateParent);
	static HRESULT STDMETHODCALLTYPE PegManagedPeerNoRef(CDependencyObject *element);
	static HRESULT STDMETHODCALLTYPE PerFrameCallback();
	static HRESULT STDMETHODCALLTYPE RaiseEvent(CDependencyObject *target, unsigned int eventId, CDependencyObject *coreEventArgs, unsigned int eventArgsTypeIndex);
	static HRESULT STDMETHODCALLTYPE ResolveFileResource(unsigned __int16 *pPath, unsigned __int16 **ppFileName);
	static HRESULT STDMETHODCALLTYPE TryPegManagedPeer(CDependencyObject *element, unsigned int isShutdownException, unsigned int *pWasPegged);
	static HRESULT STDMETHODCALLTYPE TryUnpegManagedPeer(CDependencyObject *element, unsigned int isShutdownException, unsigned int *pWasUnpegged);
	static HRESULT STDMETHODCALLTYPE TypeIsAssignableFrom(unsigned int baseTypeId, unsigned int derivedTypeId);
	static HRESULT STDMETHODCALLTYPE UnpegManagedPeerNoRef(CDependencyObject *element);

};

